#该问题发生于，我想使得两个不同的文件夹中里面的文件前缀保存相同
import argparse
from pathlib import Path
import shutil

def Parse_Arguments():
    parser = argparse.ArgumentParser(description="")
    parser.add_argument('--path1', default=r"D:\data\img", type=str)
    parser.add_argument('--path2', default=r"D:\data\img1", type=str)
    parser.add_argument('--is_path1_weight', default=0, type=int)
    parser.add_argument('--is_path2_weight', default=0, type=int)
    return parser.parse_args()

def main():
    args = Parse_Arguments()
    files1 = Path(args.path1).glob("*")
    files2 = Path(args.path2).glob("*")
    #存储文件名出现次数字典
    file_map = {}
    for item in files1:
        file_stem = item.stem  #文件名前缀
        file_map[file_stem] = file_map.get(file_stem, 0) + 1 + args.is_path1_weight
    for item in files2:
        file_stem = item.stem
        file_map[file_stem] = file_map.get(file_stem, 0) + 1 + args.is_path2_weight
    #遍历两个文件夹
    #is_path1_weight 0 is_path2_weight 0 存储下出现两次的文件，删除没出现或者出现次数为1的文件
    #is_path1_weight 1 is_path2_weight 0 保留path1 所有文件，去除path2中跟path1不一样的文件
    #is_path2_weight 0 is_path2_weight 1 保留path2 所有文件，去除path1中跟path2不一样的文件
    #is_path2_weight 1 is_path2_weight 1 无效
    files1 = Path(args.path1).glob("*")
    files2 = Path(args.path2).glob("*")
    for item in files1:
        file_stem = item.stem
        exist_flag = file_map.get(file_stem, 0)
        if exist_flag >= 2:
            continue
        elif exist_flag == 1:
            print(f"{str(item)}被删除")
            item.unlink()

    for item in files2:
        file_stem = item.stem
        exist_flag = file_map.get(file_stem, 0)
        if exist_flag >= 2:
            continue
        elif exist_flag == 1:
            print(f"{str(item)}被删除")
            item.unlink()

if __name__ == "__main__":
    main()
